export function filterTree(tree, arr = []) {
  if (!tree.length) return [];
  for (let item of tree) {
    // 循环数组，然后过滤数据
    // 如果该条数据title不为存在时，跳出本次循环
    if (!item.title) continue;
    // 如果满足条件时，用新node代替，然后把chilren清空
    let node = { ...item, children: [] };
    // 然后添加到新数组中
    arr.push(node);
    // 如果有子节点，调用递归函数，并把空数组传给下一个函数
    // 利用引用数据类型的特性，实现浅拷贝
    // 递归函数过滤时会改变这个空数组数据，从而实现层级结构过滤
    if (item.children && item.children.length) {
      filterTree(item.children, node.children);
    }
  }
  return arr;
}

export function toTree(arr) {
  const newArr = [];
  const map = {};
  arr.forEach((item) => {
    if (!item.children) item.children = []; //判断数据是否有子级   没有则进行子级的添加
    map[item.id] = item; // 添加对应的映射关系
  });
  arr.forEach((item) => {
    if (map[item.parentId]) {
      map[item.parentId].children.push(item);
    } else {
      newArr.push(item);
    }
  });
  return newArr;
}
